package models

import (
	"gorm.io/gorm"
	"time"
	"user-srv/basic/inits"
)

// 勋章规则表
type BadgeRules struct {
	Id          uint64         `gorm:"column:id;type:bigint UNSIGNED;primaryKey;not null;" json:"id"`
	Name        string         `gorm:"column:name;type:varchar(100);comment:勋章名称;not null;" json:"name"`                                         // 勋章名称
	Desc        string         `gorm:"column:desc;type:varchar(255);comment:简单描述;not null;" json:"desc"`                                         // 简单描述
	Condition   string         `gorm:"column:condition;type:varchar(255);comment:获取条件（如:连续签到30天）;not null;" json:"condition"`                    // 获取条件（如:连续签到30天）
	IsPermanent uint8          `gorm:"column:is_permanent;type:tinyint UNSIGNED;comment:是否永久有效 1-是 2-否;not null;default:1;" json:"is_permanent"` // 是否永久有效 1-是 2-否
	Status      uint8          `gorm:"column:status;type:tinyint UNSIGNED;comment:是否启用 1-启用 0-停用;not null;default:1;" json:"status"`             // 是否启用 1-启用 0-停用
	CreatedAt   time.Time      `gorm:"column:created_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"`
	UpdatedAt   time.Time      `gorm:"column:updated_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"`
	DeletedAt   gorm.DeletedAt `gorm:"column:deleted_at;type:datetime(3);default:NULL;" json:"deleted_at"`
}

// 勋章规则表
func (br *BadgeRules) TableName() string {
	return "badge_rules"
}

// 勋章规则添加
func (br *BadgeRules) BadgeRulesAdd() error {
	return inits.DB.Create(&br).Error
}

// 获取勋章规则信息
func (br *BadgeRules) GetBadgeRulesInfoById(id int) error {
	return inits.DB.Where("id = ?", id).Limit(1).Find(&br).Error
}
